package com.yf.exam.modules.paper.dto;

import com.yf.base.api.annon.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
* <p>
* 试卷请求类
* </p>
*
* @author 聪明笨狗
* @since 2020-05-25 17:31
*/
@Data
@ApiModel(value="试卷", description="试卷")
public class PaperDTO implements Serializable {
    private static final long serialVersionUID = 1L;


    @ApiModelProperty(value = "ID", required=true)
    private String id;

    @Dict(dictTable = "sys_user", dicText = "real_name", dicCode = "id")
    @ApiModelProperty(value = "用户ID", required=true)
    private String userId;
    private String userId_dictText;

    @ApiModelProperty(value = "规则ID", required=true)
    private String examId;

    @ApiModelProperty(value = "考试标题", required=true)
    private String title;

    @ApiModelProperty(value = "考试时长", required=true)
    private Integer totalTime;

    @ApiModelProperty(value = "用户时长", required=true)
    private Integer userTime;

    @ApiModelProperty(value = "试卷总分", required=true)
    private BigDecimal totalScore;

    @ApiModelProperty(value = "试卷及格分", required=true)
    private BigDecimal qualifyScore;

    @ApiModelProperty(value = "整卷客观分", required=true)
    private BigDecimal objScore;

    @ApiModelProperty(value = "整卷主观分", required=true)
    private BigDecimal subjScore;

    @ApiModelProperty(value = "用户总得分", required=true)
    private BigDecimal userScore;

    @ApiModelProperty(value = "用户主观分", required=true)
    private BigDecimal userSubjScore;

    @ApiModelProperty(value = "用户客观分", required=true)
    private BigDecimal userObjScore;

    @ApiModelProperty(value = "最后截止时间", required=true)
    private Date limitTime;

    @ApiModelProperty(value = "实际切屏次数", required=true)
    private Integer leaveTimes;

    @ApiModelProperty(value = "实际交卷时间")
    private Date handTime;

    @Dict(dicCode = "paper_hand_state")
    @ApiModelProperty(value = "交卷状态,0未交卷,1已交卷", required=true)
    private Integer handState;
    private String handState_dictText;


    @ApiModelProperty(value = "是否需要阅卷", required=true)
    private Boolean reviewRequire;


    @Dict(dicCode = "paper_review_state")
    @ApiModelProperty(value = "阅卷状态,0未阅,1已阅,2部分已阅", required=true)
    private Integer reviewState;
    private String reviewState_dictText;

    @Dict(dictTable = "sys_user", dicText = "real_name", dicCode = "id")
    @ApiModelProperty(value = "阅卷人员", required=true)
    private String reviewUser;
    private String reviewUser_dictText;

    @ApiModelProperty(value = "阅卷评语", required=true)
    private String reviewMsg;

    @ApiModelProperty(value = "阅卷时间")
    private Date reviewTime;

    @Dict(dicCode = "paper_ex_state")
    @ApiModelProperty(value = "异常状态")
    private Integer exState;
    private String exState_dictText;

    @ApiModelProperty(value = "异常消息")
    private String exMsg;

    @ApiModelProperty(value = "成绩是否合格", required=true)
    private Boolean passed;

    @Dict(dicCode = "paper_valid")
    @ApiModelProperty(value = "成绩是否有效", required=true)
    private Boolean valid;
    private String valid_dictText;

    @ApiModelProperty(value = "重复考试之前的会被覆盖", required=true)
    private Boolean overwrite;

    @Dict(dictTable = "sys_depart", dicText = "dept_name", dicCode = "dept_code")
    @ApiModelProperty(value = "所属部门", required=true)
    private String deptCode;
    private String deptCode_dictText;

    @ApiModelProperty(value = "创建时间", required=true)
    private Date createTime;

    @ApiModelProperty(value = "更新时间", required=true)
    private Date updateTime;

    @ApiModelProperty(value = "创建人", required=true)
    private String createBy;

    @ApiModelProperty(value = "修改人", required=true)
    private String updateBy;

    @ApiModelProperty(value = "试卷AI分析",required = true)
    private String examText;

}
